package 作业.set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * (1)定义Set集合，存入多个字符串
 * (2)删除集合中不满足身份证号码的数据
 * 身份证要求：
 * -长度必须18位
 * ·数字0不能开头
 * 。除了最后一位，中间不允许有字母
 * 。最后一位可以是数字或者Xx
 * （3)然后利用迭代器遍历集合元素并输出
 */
public class Test {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("3726221951dg010416");
        set.add("37222219700211041x");
        set.add("37242219680208044x");
        set.add("354221968020850444");
        set.add("37262319800904575x");
        set.add("3722231af303a99673");
        set.add("3711fdg98603040033");
        set.add("373522198511190042");
        set.add("3755sdf1991112998x");
        set.add("3726221951d16");
        set.add("026221951dg0310416");
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()) {
            String idCard = iterator.next();
            if(!isIdCard(idCard)){//判断身份证是否合法
                iterator.remove();
            }

        }

        System.out.println("合法身份证号码");
        for (String s : set) {
            System.out.println(s);
        }
    }

    private static boolean isIdCard(String idCard) {
        return idCard !=null && idCard.matches("[1-9]\\d{16}[0-9Xx]");//
    }
}
